/**
 * API Service for Location Management
 * 封装所有与设备安装位置相关的后端 API 调用。
 */
import apiClient from './axios';

/**
 * 获取位置树数据。
 * @param {string} [name] - 可选的名称过滤器。
 * @returns {Promise<AxiosResponse<any>>}
 */
export const getLocationTree = (name) => {
    const params = {};
    if (name) {
        params.name = name;
    }
    return apiClient.get('/locations/tree', { params });
};

/**
 * 创建一个新的位置节点。
 * @param {object} locationData - { name, description, parentId }
 * @returns {Promise<AxiosResponse<any>>}
 */
export const createLocation = (locationData) => {
    return apiClient.post('/locations', locationData);
};

/**
 * 更新一个已存在的位置节点。
 * @param {number} id - 要更新的位置节点的ID。
 * @param {object} locationData - { name, description }
 * @returns {Promise<AxiosResponse<any>>}
 */
export const updateLocation = (id, locationData) => {
    return apiClient.put(`/locations/${id}`, locationData);
};

/**
 * 删除一个位置节点。
 * @param {number} id - 要删除的位置节点的ID。
 * @returns {Promise<AxiosResponse<any>>}
 */
export const deleteLocation = (id) => {
    return apiClient.delete(`/locations/${id}`);
};

/**
 * 【补全】移动一个位置节点到新的父节点下。
 * @param {object} moveData - { dragId, targetId }
 * @returns {Promise<AxiosResponse<any>>}
 */
export const moveLocation = (moveData) => {
    return apiClient.post('/locations/move', moveData);
};

/**
 * 【补全】更新同级节点列表的排序。
 * @param {Array<number>} sortedLocationIds - 按新顺序排列好的位置ID列表。
 * @returns {Promise<AxiosResponse<any>>}
 */
export const updateSortOrder = (sortedLocationIds) => {
    return apiClient.put('/locations/sort', sortedLocationIds);
};